package com.web_bloks.project.controllers.client;

import com.google.gwt.user.client.Window; 
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.HistoryListener;
import com.web_bloks.system.client.Logger;
import com.web_bloks.document.client.Document;
import com.web_bloks.document.client.DocumentListener;
import com.web_bloks.document.client.DocumentManager;
/**
 * 
 * @author Jean-Lou Dupont
 *
 */
public class HistoryController 
	implements HistoryListener, DocumentListener {
	
	DocumentManager dm = null;
	
	String titlePrefix = null;
	
	/*===================================================================
	 * CONSTRUCTORS 
	 ===================================================================*/

	protected HistoryController() {
	}
	/*===================================================================
	 * CONFIGURATION 
	 ===================================================================*/
	public void setDocumentManager(DocumentManager dm) {
		this.dm = dm;
	}
	public void setTitlePrefix(String prefix) {
		this.titlePrefix = new String( prefix );
	}
	/*===================================================================
	 * DocumentListener
	 ===================================================================*/
	public boolean onDocumentChanged(Document doc) {
		
		Logger.logInfo( "HistoryController.onDocumentChanged" );
		
		String token = null;
		
		if ( null != doc )
			token = doc.getPageTitleText().toString();
		else
			token = History.getToken();
		
		// push an entry
		History.newItem( token );
		
		return false;
	}
	public void onDocumentChanging(String name, String targetRegionName) {
		// not much todo until the document has really changed
	}
	
	public void onDocumentRendered(Document doc) {
		
	}
	
	/*===================================================================
	 * HistoryListener 
	 ===================================================================*/
	/**
	 * 
	 */
	public void onHistoryChanged(String historyToken) {
		
		Logger.logInfo( "HistoryController.onHistoryChanged, token["+historyToken+"]" );
		
		if ( (null == historyToken) || (historyToken.length() == 0) || (historyToken == "#") )
			historyToken = "MainPage";

		// load the requested document
		Window.setTitle( titlePrefix + " - " + historyToken );
		dm.load( historyToken );
	}
	
}//END